<?php
require_once('define.inc.php');

//pratique pour le debuggage : affiche le tableau passe en argument
function npr($tab) {
	echo '<pre>';
	print_r ($tab);
	echo '</pre>';
}

function log_error($log, $admin=false) {
    $date = date("Y-m-d");

    $text = $date . ' ' . date("H:i:s") . ' - ';
    //$text.= $_SERVER["HTTP_REFERER"] . chr(9) . chr(13);
    $text.= $log;
    $text.= chr(13);

	$admin===false ? $filename = '_front' : $filename = '_admin';
    $file = "../" . LOG_DIR . $date . $filename . ".log";

    $fp = fopen($file, "a");
    fputs($fp, $text); 
    fclose($fp);

    return true;
}

// renvoi un tableau html de gestion de données
function displayAll($class, $data) {
	$html  = '<table><tr>';
	foreach (array_keys($data[1]) as $header) {
		$html .= '<th>' . $header . '</th>';
	}
	$html .= '<th colspan="2">action</th>';
	$html .= '</tr>';
	foreach ($data as $id => $tmp) {
		$param = 'id=' . $id . '&action=';
		foreach ($tmp as $value) {
			$html .= '<tr>';
			$html .= '<td>' . $value . '</td>';
			$html .= '<td><a href="' . $class . '.php?' . $param . 'edit">' . getIcon('pencil') . 'modifier</a></td>';
			$html .= '<td>';
			$id==1 ? $html.= NO_DELETE : $html .= '<a href="' . $class . '.php?' . $param . 'delete">' . getIcon('delete') . 'supprimer</a>';
			$html .= '</td></tr>';
		}
	}
	$html .= '</tr></table>';
	return $html;
}


// transforme une date au format US au format FR
function usToFrDate($date, $time=false, $new_delimiteur='/', $delimiteur='-') {
	$regex = "([0-9]{4})".$delimiteur."([0-9]{2})".$delimiteur."([0-9]{2})([ 0-9\:]+)?";
	if(ereg($regex, $date, $regs)){
		if (!$time)
			return ($regs[3] . $new_delimiteur . $regs[2] . $new_delimiteur . $regs[1]);
		else
			return trim( ereg_replace( $regex, "\\3".$new_delimiteur."\\2".$new_delimiteur."\\1 \\4", $date));
	}
    return $ret;
}

// transforme une date au format FR au format US
function frToUsDate($date, $new_delimiteur='-', $delimiteur='/') {
	$regex = "([0-9]{2})".$delimiteur."([0-9]{2})".$delimiteur."([0-9]{4})([ 0-9\:]+)?";
	if(ereg($regex,$date)){
		return trim(ereg_replace($regex,"\\3".$new_delimiteur."\\2".$new_delimiteur."\\1 \\4",$date));
	}
	return (false);
}


function check_email_address($email) {
  // First, we check that there's one @ symbol, and that the lengths are right
  if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $email)) {
    // Email invalid because wrong number of characters in one section, or wrong number of @ symbols.
    return false;
  }
  // Split it into sections to make life easier
  $email_array = explode("@", $email);
  $local_array = explode(".", $email_array[0]);
  for ($i = 0; $i < sizeof($local_array); $i++) {
     if (!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$", $local_array[$i])) {
      return false;
    }
  }  
  if (!ereg("^\[?[0-9\.]+\]?$", $email_array[1])) { // Check if domain is IP. If not, it should be valid domain name
    $domain_array = explode(".", $email_array[1]);
    if (sizeof($domain_array) < 2) {
        return false; // Not enough parts to domain
    }
    for ($i = 0; $i < sizeof($domain_array); $i++) {
      if (!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$", $domain_array[$i])) {
        return false;
      }
    }
  }
  return true;
}

// traite le formulaire de contact ( et de proposition de bien )
function treatContactForm ($post)
{
	//npr($post);
	$ret = array();
	$civilite	= $post['civilite_id'];
	$nom		= $post['nom'];
	$prenom		= $post['prenom'];
	$mail		= $post['mail'];
	// champs optionnels si on a lee formulaire court ( $short = true )
	if (isset($post['telephone']))	$telephone	= $post['telephone'];
	if (isset($post['message']))	$message	= $post['message'];
	
	if (isset($civilite) && $civilite==DEFAULT_ID)
	{
		$ret['civilite_id'] = "choisir une civilité";
	}
	if (isset($prenom) && $prenom=="")
	{
		$ret['prenom'] = "préciser un prénom";
	}
	if (isset($nom) && $nom=="")
	{
		$ret['nom'] = "préciser un nom de famille";
	}
	if (isset($mail))
	{
		if ($mail=="")
		{
			$ret['mail'] = "préciser une adresse mail";
		}
		elseif (!check_email_address($mail))
		{
			$ret['mail'] = "cette adresse mail n'est pas valide";
		}
	}
	if (isset($message) && $message=="")
	{
		$ret['message'] = "indiquer un message";
	}
	return $ret;
}

// envoi un mail avec les informations à l'administration
// du form de contact ( et de proposition de bien )
function sendContactMail($info, $proposition=false)
{
	//$info = $_POST;
	if ( isset($info['mail']) && $info['mail']!="" && check_email_address($info['mail']) )
	{
		require_once('../lib/phpmailer/class.phpmailer.php');
		require_once('define.inc.php');
		global $CIVILITES;
	
		$mail = new phpmailer();
		$mail->From     = MAIL_CONTACT;
		$mail->FromName = MAIL_CONTACT_NAME;
		$mail->Host     = MAIL_HOST;
		$mail->Mailer   = "smtp";
		
		$subject = "[maci-immobilier] Message venant du formulaire de contact";
		$name = $CIVILITES[$info['civilite_id']] . ' ' . $info['prenom'] . ' ' . $info['nom'];
		
		$body = "Nom du correspondant: " . $name;
		$body.= "Adresse mail: " . $info['mail'];
		if (isset($info['telephone']) && $info['telephone']!="")
			$body.= "Téléphone: " . $info['telephone'];
		if (isset($info['message']) && $info['message']!="")
			$body.= "Message: " . $info['message'];

		if ($proposition)
		{
			require_once('type_transaction.class.php');
			require_once('type_bien.class.php');
			require_once('localisation.class.php');
			
			$subject = "[maci-immobilier] Proposition d'un bien immobilier";
			$body.= chr(10) . "\n\n** Proposition d'un bien immobilier **";
			if (isset($info['type_transaction_id'])) {
				$type_transaction = new type_transaction();
				$body.= "Type de transaction: " . $type_transaction->getLibelle( $info['type_transaction_id'] );
			}
			if (isset($info['type_bien_id'])) {
				$type_bien = new type_bien();
				$body.= "Type de bien: " . $type_bien->getLibelle( $info['type_bien_id'] );
			}
			if (isset($info['localisation_id'])) {
				$localisation = new localisation();
				$body.= "Localisation: " . $localisation->getLibelle( $info['localisation_id'] );
			}
			if (isset($info['nb_piece']) && $info['nb_piece']!="")
				$body.= "Nombre de pièces: " . $info['nb_piece'];
			if (isset($info['surface']) && $info['surface']!="")
				$body.= "Surface: " . $info['surface'];
		}
		
		$body.= URL;
		$body.= MAIL_SIGNOFF;

		$mail->Subject = $subject;
		$mail->CharSet = 'utf-8';
		$mail->SetLanguage = 'fr';
		$mail->ContentType = 'text/plain';
		$mail->Body    = $body;
		$mail->AltBody = $body;
		$mail->AddAddress(MAIL_INFO, MAIL_INFO_NAME);
		$send = $mail->Send();
		
		// Clear all addresses and attachments for next loop
		$mail->ClearAddresses();
		$mail->ClearAttachments();
		
		if($send) {
			return true;
		}
	}
	return false;
}


// renvoi le code html pour un element de formulaire du type SELECT + son LABEL
function getSelect($values, $fieldName, $text, $selectedId=false)
{
    $label = '<label for="' . $fieldName . '">' . $text . '</label>';
    $select = '<select id="' . $fieldName . '" name="' . $fieldName . '">';
    foreach ($values as $key => $value) {
        $select.= '<option value="' . $key . '"';
        if($selectedId!==false && $selectedId==$key) $select.= ' selected="selected"';
        $select.= '>' . $value . '</option>';
    }
    $select.= '</select>';
    return $label . $select;
}

function wordPluriel($word, $nb, $pluriel_mark='s') {
	if ($nb > 1) return $word . $pluriel_mark;
	else if (!is_numeric($nb)) return $word . '(' . $pluriel_mark . ')';
	return $word;
}

function displayPiece($piece='') {
	if ($piece=='0') return "nombre de pièce " . DEFAULT_DISPLAY_VALUE;
	return $piece . '&nbsp;' . wordPluriel('pièce', $piece);
}

function displayPrice($price='') {
	if ($price=='0') return "prix " . DEFAULT_DISPLAY_VALUE;
	return displayNumber($price) . '&nbsp;' . CURRENCY;
}

function displaySurface($surface='') {
	if ($surface=='0') return "surface " . DEFAULT_DISPLAY_VALUE;
	return displayNumber($surface) . '&nbsp;m<sup>2</sup>';
}

function displayNumber($nb)
{
	$nb = number_format($nb, 2, ',', ' ');
	return eregi_replace(",[0].$", "", $nb);
}

function clearNumber($nb)
{
	$nb = eregi_replace("[\.]|[,]", ".", $nb);
	$nb = eregi_replace(" ", "", $nb);
	return $nb;
}


function displayRequiredField() {
	return '<span class="requiredField">*</span>';
}

// renvoi le code pour afficher une icone
function getIcon($icon, $title='MACI Immobilier') {
	return '<img src="' . ICON_DIR . $icon . '.png" class="icon" alt="icone ' . $icon . '" title="' . $title . '" />';
}

// renvoi le code pour afficher un drapeau
function getFlag($flag, $title='MACI Immobilier') {
	return '<img src="' . FLAG_DIR . $flag . '.gif" class="flag" alt="Drapeau ' . $flag . '" title="' . $title . '" />';
}

// affiche le code HTML de Google Analytics pour la partie PUBLIC
function displayGoogleAnalytics()
{
    $html = '<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>';
    $html.= '<script type="text/javascript">_uacct = "UA-2304631-1";urchinTracker();</script>';
    return $html;
}

// affiche le code HTML de Google Analytics pour la partie ADMIN
function displayGoogleAnalyticsAdmin()
{
    $html = '<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>';
    $html.= '<script type="text/javascript">_uacct = "UA-2304631-2";urchinTracker();</script>';
    return $html;
}
